package br.com.eduquiz.session;

import br.com.eduquiz.entity.*;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;
import java.util.Arrays;

@Name("categoriaList")
public class CategoriaList extends EntityQuery<Categoria> {
	
	private static final long serialVersionUID = -4653467569883853533L;

	private static final String EJBQL = "select categoria from Categoria categoria";

	private static final String[] RESTRICTIONS = {
			"lower(categoria.nome) like lower(concat('%',#{categoriaList.categoria.nome},'%'))",
			"lower(categoria.descricao) like lower(concat('%',#{categoriaList.categoria.descricao},'%'))",
			"categoria.usuario.subGrupo.id = #{categoriaList.subgrupo.id}",
			"categoria.usuario.subGrupo.grupo.id = #{categoriaList.grupo.id}",
			"categoria.usuario.subGrupo.grupo.administradorGrupo.id = #{categoriaList.administradorGrupo.id}",};

	private Categoria categoria = new Categoria();
	
	@In(required=false)
	private Usuario usuario;
	
	@In(required=false)
	private SubGrupo subgrupo;
	
	@In(required=false)
	private Grupo grupo;
	
	@In(required=false)
	private AdministradorGrupo administradorGrupo;

	public CategoriaList() {
		setEjbql(EJBQL);
		setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
		setMaxResults(25);
	}

	public Categoria getCategoria() {
		return categoria;
	}
	

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Usuario getUsuario() {
		System.out.println("RETORNANDO USUARIO: " + usuario.getId());
		return usuario;
	}

	public SubGrupo getSubgrupo() {
		return subgrupo;
	}

	public void setSubgrupo(SubGrupo subgrupo) {
		this.subgrupo = subgrupo;
	}

	public Grupo getGrupo() {
		return grupo;
	}

	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

	public AdministradorGrupo getAdministradorGrupo() {
		return administradorGrupo;
	}

	public void setAdministradorGrupo(AdministradorGrupo administradorGrupo) {
		administradorGrupo = this.administradorGrupo;
	}
}
